const Utils = {
  deepClone: function (source) {
    if (!source && typeof source !== 'object') {
      throw new Error('error arguments deepClone')
    }
    // @ts-ignore
    const targetObj = source.constructor === Array ? [] : {}
    // @ts-ignore
    Object.keys(source).forEach(keys => {
      // @ts-ignore
      if (source[keys] && typeof source[keys] === 'object') {
        // @ts-ignore
        targetObj[keys] = Utils.deepClone(source[keys])
      } else {
        // @ts-ignore
        targetObj[keys] = source[keys]
      }
    })
    // @ts-ignore
    return targetObj
  }
}

export default Utils
